home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / Libraries / Z80 emulator / 68K version / cmd_IX⁄IY.c < prev    next >
Encoding:
Text File  |  1995-11-01  |  11.9 KB  |  724 lines  |  [TEXT/CWIE]

  1. //    ix/iy + EXX:    use HL        (( fMSX; xz80 ))
  2. //    ix/iy + EX DE,HL:    use HL        (( fMSX; xz80 ))
  3. //    ix/iy + EX (SP),HL:    use ix/iy        (( fMSX; xz80 ))
  4. //    ix/iy + JP (HL):    use ix/iy        (( fMSX; xz80; Z80 ))
  5. //    ix/iy + PUSH HL:    use ix/iy        (( fMSX; xz80; Z80 ))
  6. //    ix/iy + POP HL:    use ix/iy        (( fMSX; xz80; Z80 ))
  7. //    ix/iy + ADD HL,BC:    use ix/iy        ?
  8. //    ix/iy + ADD HL,DE:    use ix/iy        ?
  9. //    ix/iy + ADD HL,HL:    use ix/iy        ?
  10. //    ix/iy + ADD HL,SP:    use ix/iy        ?
  11. //    ix/iy + LD SP,HL:    use ix/iy        ?
  12.  
  13.  
  14. // -----    ix/iy Command Dispatcher ----------------------------------------------------------------
  15.  
  16.  
  17. // -----    Handle ix prefixed command --------------------------------------------------------------
  18. cmd_IX:    lea    IX,ai            // ai -> ix / iy
  19.     bra.s    cmd_XY
  20.  
  21.  
  22. // -----    Handle iy prefixed command --------------------------------------------------------------
  23. cmd_IY:    lea    IY,ai            // ai -> ix / iy
  24. cmd_XY:    move.b    (ip)+,db
  25.  
  26.  
  27. // -----    debugger related testings
  28. #if CMD_PROFILE || cmd_firstuse
  29.     movea.l    cnt_xy,a0
  30. //    addq.l    #1,(a0,db.l*4)
  31.     lsl    #2,db
  32.     addq.l    #1,(a0,db.l)
  33.     lsr    #2,db
  34. #if cmd_firstuse
  35.     bne.s    cmdxy2
  36.     move.l    ai,-(a7)            // save ai -> ix / iy
  37.     }; Do_1st_Instr ( ip-2 ); asm {
  38.     move.l    (a7)+,ai            // reload ai -> ix / iy
  39. cmdxy2:
  40. #endif
  41. #endif
  42.  
  43.  
  44. // -----    increment r register -----------------------------------
  45. #if EXACT_R
  46.     addq.b    #1,r
  47. #endif
  48.  
  49.  
  50. // -----    execute instruction -------------------------------------
  51.     dc.w    0x41FB, 0x4A06        // lea    *+$08(D4.l*2),A0
  52.     adda.w    (a0),a0
  53.     jmp    (a0)
  54.  
  55.     
  56. xy_tab:    dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP
  57.     dc.w    XYNOP,    xy09,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP
  58.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP
  59.     dc.w    XYNOP,    xy25,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP
  60.     dc.w    XYNOP,    xy33,    xy34,    xy35,    xy36,    xy37,    xy38,    XYNOP    
  61.     dc.w    XYNOP,    xy41,    xy42,    xy43,    xy44,    xy45,    xy46,    XYNOP
  62.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    xy52,    xy53,    xy54,    XYNOP
  63.     dc.w    XYNOP,    xy57,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP
  64.     
  65.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    xy68,    xy69,    xy70,    XYNOP
  66.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    xy76,    xy77,    xy78,    XYNOP
  67.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    xy84,    xy85,    xy86,    XYNOP
  68.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    xy92,    xy93,    xy94,    XYNOP
  69.     dc.w    xy96,    xy97,    xy98,    xy99,    xy100,    xy101,    xy102,    xy103
  70.     dc.w    xy104,    xy105,    xy106,    xy107,    xy108,    xy109,    xy110,    xy111
  71.     dc.w    xy112,    xy113,    xy114,    xy115,    xy116,    xy117,    XYNOP,    xy119
  72.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    xy124,    xy125,    xy126,    XYNOP
  73.     
  74.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    xy132,    xy133,    xy134,    XYNOP
  75.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    xy140,    xy141,    xy142,    XYNOP
  76.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    xy148,    xy149,    xy150,    XYNOP
  77.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    xy156,    xy157,    xy158,    XYNOP
  78.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    xy164,    xy165,    xy166,    XYNOP
  79.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    xy172,    xy173,    xy174,    XYNOP
  80.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    xy180,    xy181,    xy182,    XYNOP
  81.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    xy188,    xy189,    xy190,    XYNOP
  82.     
  83.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP
  84.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYCB,    XYNOP,    XYNOP,    XYNOP,    XYNOP
  85.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP
  86.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP
  87.     dc.w    XYNOP,    xy225,    XYNOP,    xy227,    XYNOP,    xy229,    XYNOP,    XYNOP
  88.     dc.w    XYNOP,    xy233,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP
  89.     dc.w    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP
  90.     dc.w    XYNOP,    xy249,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP,    XYNOP
  91.  
  92.  
  93. #define    lea_a0        ;\
  94.     move.b    (ip)+,core    ;\
  95.     ext.w    core    ;\
  96.     add.w    ir,core    ;\
  97.     movea.l    core,a0
  98.  
  99.  
  100. // -----    Handle instructions, which don't use the prefix at all but behave as normal instead (G.Lunter's Z80.DOC)
  101. //    prefix ix: overrides preceding ix/iy prefix
  102. //    prefix iy: overrides preceding ix/iy prefix
  103. //    prefix ED: ignores ix / iy prefix and behaves as normal
  104. XYNOP:    do_info_illegals2
  105. #if EXACT_R
  106.     subq.b    #1,r    //  1+1-1  =  1
  107. #endif
  108. #if exact_timing
  109.     // nop        // 4 is correct
  110. #endif
  111.     subq.l    #1,ip
  112.     bra    cmd_xx
  113.  
  114.  
  115. xy09:    // ----- add ir,bc
  116.     more8
  117.     more3        // 4+8+3 = 15 T cycles
  118.     ror.b    #1,f
  119.     move.w    BC,d0
  120.     add.w    d0,ir
  121.     roxl.b    #1,f
  122.     m_next
  123.     
  124. xy25:    // -----    add ir,de
  125.     more8
  126.     more3        // 4+8+3 = 15 T cycles
  127.     ror.b    #1,f
  128.     move.w    DE,d0
  129.     add.w    d0,ir
  130.     roxl.b    #1,f
  131.     m_next
  132.     
  133. xy33:    // -----    ld ir,nn
  134.     more8
  135.     more2        // 4+8+2 = 14 T cycles
  136.     move.b    (ip)+,il
  137.     move.b    (ip)+,ih
  138.     m_next
  139.  
  140. #if rom_protection
  141. sto_ir:    move.w    ir,d0
  142.     bra    store_word
  143. #endif
  144.  
  145. xy34:    // -----    ld (nn),ir
  146.     more8            
  147.     more8            
  148.     move.w    (ip)+,core
  149.     rol.w    #8,core
  150.     movea.l    core,a0
  151.     if_rom(sto_ir)
  152.     move.b    il,(a0)+
  153.     move.b    ih,(a0)
  154.     m_next
  155.  
  156. xy35:    // -----    inc ir
  157.     more6        // 4+6 = 10 T
  158.     addq.w    #1,ir
  159.     m_next
  160.  
  161. xy36:    // -----    inc ih
  162.     more4
  163.     addq.b    #1,ih
  164.     move    ccr,d0
  165.     and.b    #1,f
  166.     and.b    #0xfe,d0
  167.     or.b    d0,f    
  168.     do_info_illegals2
  169.     m_next
  170.     
  171. xy37:    // ----- dec ih    
  172.     more4
  173.     subq.b    #1,ih
  174.     move    ccr,d0
  175.     and.b    #1,f
  176.     and.b    #0xfe,d0
  177.     or.b    d0,f    
  178.     do_info_illegals2
  179.     m_next
  180.     
  181. xy38:    // -----    ld ih,n    
  182.     more7
  183.     move.b    (ip)+,ih
  184.     do_info_illegals3
  185.     m_next
  186.     
  187. xy41:    // -----    add ir,ir
  188.     more8
  189.     more3        // 15 T
  190.     ror.b    #1,f
  191.     lsl.w    ir
  192.     roxl.b    #1,f    
  193.     m_next
  194.     
  195. xy42:    // -----    ld ir,(nn)
  196.     more8
  197.     more8        // 20 T
  198.     move.w    (ip)+,core
  199.     rol.w    #8,core
  200.     movea.l    core,a0
  201.     move.b    (a0)+,il
  202.     move.b    (a0),ih
  203.     m_next
  204.  
  205. xy43:    // -----    dec ir
  206.     more6        // 10 T
  207.     subq.w    #1,ir
  208.     m_next
  209.  
  210. xy44:    // -----    inc il    
  211.     more4
  212.     addq.b    #1,il
  213.     move    ccr,d0
  214.     and.b    #1,f
  215.     and.b    #0xfe,d0
  216.     or.b    d0,f    
  217.     do_info_illegals2
  218.     m_next
  219.     
  220. xy45:    // ----- dec il
  221.     more4
  222.     subq.b    #1,il
  223.     move    ccr,d0
  224.     and.b    #1,f
  225.     and.b    #0xfe,d0
  226.     or.b    d0,f    
  227.     do_info_illegals2
  228.     m_next
  229.     
  230. xy46:    // -----    ld il,n
  231.     more7
  232.     move.b    (ip)+,il
  233.     do_info_illegals3
  234.     m_next
  235.  
  236. xy52:    // -----    inc (ir+n)
  237.     more8
  238.     more8
  239.     more3        // 4+8+8+3 = 23 T
  240.     lea_a0
  241.     bra    incx
  242.  
  243. xy53:    // -----    dec (ir+n)
  244.     more8
  245.     more8
  246.     more3        // 4+8+8+3 = 23 T
  247.     lea_a0
  248.     bra    decx
  249.  
  250. xy54:    // -----    ld (ir+n),n
  251.     more8
  252.     more7        // 4+8+7 = 19 T
  253.     lea_a0
  254.     move.b    (ip)+,db
  255.     store_db
  256.     
  257. xy57:    // -----    add ir,sp
  258.     more8
  259.     more3        // 4+8+3 = 15 T
  260.     ror.b    #1,f
  261.     move.w    rp,d0
  262.     add.w    d0,ir
  263.     roxl.b    #1,f
  264.     m_next
  265.  
  266. xy68:    // -----    ld b,ih
  267.     more4
  268.     move.b    ih,RB
  269.     do_info_illegals2
  270.     m_next
  271.     
  272. xy69:    // -----    ld b,il
  273.     more4
  274.     move.b    il,RB
  275.     do_info_illegals2
  276.     m_next
  277.  
  278. xy70:    // -----    ld b,(ir+n)
  279.     more8
  280.     more7        // 4+8+7 = 19 T
  281.     lea_a0
  282.     move.b    (a0),RB
  283.     m_next
  284.  
  285. xy76:    // -----    ld c,ih    
  286.     more4
  287.     move.b    ih,RC
  288.     do_info_illegals2
  289.     m_next
  290.     
  291. xy77:    // -----    ld c,il
  292.     more4
  293.     move.b    il,RC
  294.     do_info_illegals2
  295.     m_next
  296.     
  297. xy78:    // -----    ld c,(ir+n)
  298.     more8
  299.     more7        // 4+8+7 = 19 T
  300.     lea_a0
  301.     move.b    (a0),RC
  302.     m_next
  303.  
  304. xy84:    // -----    ld d,ih    
  305.     more4
  306.     move.b    ih,RD
  307.     do_info_illegals2
  308.     m_next
  309.     
  310. xy85:    // -----    ld d,il    
  311.     more4
  312.     move.b    il,RD
  313.     do_info_illegals2
  314.     m_next
  315.  
  316. xy86:    // -----    ld d,(ir+n)
  317.     more8
  318.     more7        // 4+8+7 = 19 T
  319.     lea_a0
  320.     move.b    (a0),RD
  321.     m_next
  322.  
  323. xy92:    // -----    ld e,ih
  324.     more4
  325.     move.b    ih,RE
  326.     do_info_illegals2
  327.     m_next
  328.     
  329. xy93:    // -----    ld e,il    
  330.     more4
  331.     move.b    il,RE
  332.     do_info_illegals2
  333.     m_next
  334.  
  335. xy94:    // -----    ld e,(ir+n)
  336.     more8
  337.     more7        // 4+8+7 = 19 T
  338.     lea_a0
  339.     move.b    (a0),RE
  340.     m_next
  341.  
  342. xy96:    // -----    ld ih,b
  343.     more4
  344.     move.b    RB,ih
  345.     do_info_illegals2
  346.     m_next
  347.     
  348. xy97:    // -----    ld ih,c
  349.     more4
  350.     move.b    RC,ih
  351.     do_info_illegals2
  352.     m_next
  353.     
  354. xy98:    // -----    ld ih,d
  355.     more4
  356.     move.b    RD,ih
  357.     do_info_illegals2
  358.     m_next
  359.     
  360. xy99:    // -----    ld ih,e
  361.     more4
  362.     move.b    RE,ih
  363.     do_info_illegals2
  364.     m_next
  365.     
  366. xy100:    // -----    ld ih,ih        ???!???
  367.     more4
  368.     do_info_illegals2
  369.     m_next
  370.     
  371. xy101:    // -----    ld ih,il        ???!???
  372.     bra    exit_illinstr2
  373. //    more4
  374. //    move.b    il,ih
  375. //    do_info_illegals2
  376. //    m_next
  377.  
  378. xy102:    // -----    ld h,(ir+n)    
  379.     more8
  380.     more7        // 4+8+7 = 19 T
  381.     lea_a0
  382.     move.b    (a0),RH
  383.     m_next
  384.  
  385. xy103:    // -----    ld ih,a
  386.     more4
  387.     move.b    a,ih
  388.     do_info_illegals2
  389.     m_next
  390.  
  391. xy104:    // -----    ld il,b
  392.     more4
  393.     move.b    RB,il
  394.     do_info_illegals2
  395.     m_next
  396.     
  397. xy105:    // -----    ld il,c
  398.     more4
  399.     move.b    RC,il
  400.     do_info_illegals2
  401.     m_next
  402.     
  403. xy106:    // -----    ld il,d
  404.     more4
  405.     move.b    RD,il
  406.     do_info_illegals2
  407.     m_next
  408.     
  409. xy107:    // -----    ld il,e
  410.     more4
  411.     move.b    RE,il
  412.     do_info_illegals2
  413.     m_next
  414.     
  415. xy108:    // -----    ld il,ih         ???!???
  416.     bra    exit_illinstr2
  417. //    more4
  418. //    move.b    ih,il
  419. //    do_info_illegals2
  420. //    m_next
  421.     
  422. xy109:    // -----    ld il,il        ???!???
  423.     more4
  424.     do_info_illegals2
  425.     m_next
  426.     
  427. xy110:    // -----    ld l,(ir+n)
  428.     more8
  429.     more7        // 4+8+7 = 19 T
  430.     lea_a0
  431.     move.b    (a0),RL
  432.     m_next
  433.  
  434. xy111:    // -----    ld il,a
  435.     more4
  436.     move.b    a,il
  437.     do_info_illegals2
  438.     m_next
  439.  
  440. xy112:    move.b    RB,db    // -----    ld (ir+n),b
  441.     bra.s    stox
  442.     
  443. xy113:    move.b    RC,db    // -----    ld (ir+n),c
  444.     bra.s    stox
  445.     
  446. xy114:    move.b    RD,db    // -----    ld (ir+n),d
  447.     bra.s    stox
  448.     
  449. xy115:    move.b    RE,db    // -----    ld (ir+n),e
  450.     bra.s    stox
  451.     
  452. xy116:    move.b    RH,db    // -----    ld (ir+n),h
  453.     bra.s    stox
  454.  
  455. xy117:    move.b    RL,db    // -----    ld (ir+n),l
  456.     bra.s    stox
  457.     
  458. xy119:    move.b    a,db    // -----    ld (ir+n),a
  459. stox:    more8
  460.     more7        // 4+8+7 = 19 T
  461.     lea_a0
  462.     store_db
  463.  
  464. xy124:    // -----    ld a,ih    
  465.     more4
  466.     move.b    ih,a
  467.     do_info_illegals2
  468.     m_next
  469.     
  470. xy125:    // -----    ld a,il    
  471.     more4
  472.     move.b    il,a
  473.     do_info_illegals2
  474.     m_next
  475.  
  476. xy126:    // -----    ld a,(ir+n)
  477.     more8
  478.     more7        // 4+8+7 = 19 T
  479.     lea_a0
  480.     move.b    (a0),a
  481.     m_next
  482.     
  483. // --------------------------------------------------------------------
  484.  
  485. xy132:    // ----- add a,ih
  486.     more4
  487.     add.b    ih,a
  488.     move    ccr,f
  489.     do_info_illegals2
  490.     m_next
  491.     
  492. xy133:    // ----- add a,il
  493.     more4
  494.     add.b    il,a
  495.     move    ccr,f
  496.     do_info_illegals2
  497.     m_next
  498.  
  499. xy134:    // ----- add a,(ir+n)
  500.     more8
  501.     more7        // 4+8+7 = 19 T
  502.     lea_a0
  503.     add.b    (a0),a
  504.     move    ccr,f
  505.     m_next
  506.  
  507. xy140:    // ----- adc a,ih
  508.     more4
  509.     move.b    ih,d0
  510.     lsr.b    #1,f
  511.     cmp    d0,d0        // Z-Flag setzen!
  512.     addx.b    d0,a
  513.     move    ccr,f    
  514.     do_info_illegals2
  515.     m_next
  516.     
  517. xy141:    // ----- adc a,il
  518.     more4
  519.     move.b    il,d0
  520.     lsr.b    #1,f
  521.     cmp    d0,d0        // Z-Flag setzen!
  522.     addx.b    d0,a
  523.     move    ccr,f    
  524.     do_info_illegals2
  525.     m_next
  526.  
  527. xy142:    // ----- adc a,(ir+n)
  528.     more8
  529.     more7        // 4+8+7 = 19 T
  530.     lea_a0
  531.     move.b    (a0),d0
  532.     lsr.b    #1,f
  533.     cmp    d0,d0        // Z-Flag setzen!
  534.     addx.b    d0,a
  535.     move    ccr,f
  536.     m_next
  537.  
  538. xy148:    // ----- sub a,ih
  539.     more4
  540.     sub.b    ih,a
  541.     move    ccr,f
  542.     do_info_illegals2
  543.     m_next
  544.     
  545. xy149:    // ----- sub a,il
  546.     more4
  547.     sub.b    il,a
  548.     move    ccr,f
  549.     do_info_illegals2
  550.     m_next
  551.  
  552. xy150:    // ----- sub a,(ir+n)
  553.     more8
  554.     more7        // 4+8+7 = 19 T
  555.     lea_a0
  556.     sub.b    (a0),a
  557.     move    ccr,f
  558.     m_next
  559.  
  560. xy156:    // ----- sbc a,ih
  561.     more4
  562.     move.b    ih,d0
  563.     lsr.b    #1,f
  564.     cmp    d0,d0        // Z-Flag setzen!
  565.     subx.b    d0,a
  566.     move    ccr,f
  567.     do_info_illegals2
  568.     m_next
  569.  
  570. xy157:    // ----- sbc a,il
  571.     more4
  572.     move.b    il,d0
  573.     lsr.b    #1,f
  574.     cmp    d0,d0        // Z-Flag setzen!
  575.     subx.b    d0,a
  576.     move    ccr,f
  577.     do_info_illegals2
  578.     m_next
  579.  
  580. xy158:    // ----- sbc a,(ir+n)
  581.     more8
  582.     more7        // 4+8+7 = 19 T
  583.     lea_a0
  584.     move.b    (a0),d0
  585.     lsr.b    #1,f
  586.     cmp    d0,d0        // Z-Flag setzen!
  587.     subx.b    d0,a
  588.     move    ccr,f
  589.     m_next
  590.  
  591. xy164:    // -----    and a,ih
  592.     more4
  593.     and.b    ih,a
  594.     move.b    (logflags,a.w),f
  595.     do_info_illegals2
  596.     m_next
  597.     
  598. xy165:    // -----    and a,il
  599.     more4
  600.     and.b    il,a
  601.     move.b    (logflags,a.w),f
  602.     do_info_illegals2
  603.     m_next
  604.  
  605. xy166:    // -----    and a,(ir+n)
  606.     more8
  607.     more7        // 4+8+7 = 19 T
  608.     lea_a0
  609.     and.b    (a0),a
  610.     move.b    (logflags,a.w),f
  611.     m_next
  612.  
  613. xy172:    // -----    xor a,ih
  614.     more4
  615.     move.b    ih,d0
  616.     eor.b    d0,a
  617.     move.b    (logflags,a.w),f
  618.     do_info_illegals2
  619.     m_next
  620.     
  621. xy173:    // -----    xor a,il
  622.     more4
  623.     move.b    il,d0
  624.     eor.b    d0,a
  625.     move.b    (logflags,a.w),f
  626.     do_info_illegals2
  627.     m_next
  628.  
  629. xy174:    // -----    xor a,(ir+n)
  630.     more8
  631.     more7        // 4+8+7 = 19 T
  632.     lea_a0
  633.     move.b    (a0),d0
  634.     eor.b    d0,a
  635.     move.b    (logflags,a.w),f
  636.     m_next
  637.  
  638. xy180:    // -----    or a,ih
  639.     more4
  640.     or.b    ih,a
  641.     move.b    (logflags,a.w),f
  642.     do_info_illegals2
  643.     m_next
  644.     
  645. xy181:    // -----    or a,il
  646.     more4
  647.     or.b    il,a
  648.     move.b    (logflags,a.w),f
  649.     do_info_illegals2
  650.     m_next
  651.  
  652. xy182:    // -----    or a,(ir+n)
  653.     more8
  654.     more7        // 4+8+7 = 19 T
  655.     lea_a0
  656.     or.b    (a0),a
  657.     move.b    (logflags,a.w),f
  658.     m_next
  659.  
  660. xy188:    // ----- cp a,ih
  661.     more4
  662.     cmp.b    ih,a
  663.     move    ccr,f
  664.     do_info_illegals2
  665.     m_next
  666.     
  667. xy189:    // ----- cp a,il
  668.     more4
  669.     cmp.b    il,a
  670.     move    ccr,f
  671.     do_info_illegals2
  672.     m_next
  673.  
  674. xy190:    // ----- cp a,(ir+n)
  675.     more8
  676.     more7        // 4+8+7 = 19 T
  677.     lea_a0
  678.     cmp.b    (a0),a
  679.     move    ccr,f
  680.     m_next
  681.     
  682. // ----------------------------------------------------------------------------------
  683.     
  684. xy225:    // -----    pop ir
  685.     more8
  686.     more2        // 14 T
  687.     move.b    (rp)+,il
  688.     move.b    (rp)+,ih
  689.     m_next
  690.     
  691. xy227:    // -----    ex (sp),ir
  692.     more8
  693.     more8
  694.     more3        // 23 T
  695.     move.w    (rp)+,d0
  696.     rol.w    #8,d0
  697.     move.b    ih,-(rp)
  698.     move.b    il,-(rp)
  699.     move.w    d0,ir
  700.     m_next
  701.     
  702. xy229:    // -----    push ir
  703.     more8
  704.     more3        // 15 T
  705.     move.b    ih,-(rp)
  706.     move.b    il,-(rp)
  707.     m_next
  708.     
  709. xy233:    // -----    jp (ir)        *NOT*  jp (ir+d) !!!
  710.     more4
  711.     movea.l    air,ip
  712.     bra    nxtirpt
  713.     m_next
  714.     
  715. xy249:    // -----    ld sp,ir
  716.     more6            // 10 T
  717.     move.w    ir,core
  718.     movea.l    core,rp
  719.     bne    nxtcmnd
  720.     adda.l    #0x00010000,rp    // if  rp==0  -->  rp := ramend
  721.     m_next
  722.     
  723.  
  724.